package controllers;

import java.util.Date;
import java.util.List;

import models.Consulta;
import models.Dentista;
import models.Paciente;
import models.Pessoa;
import models.Procedimento;
import play.Logger;
import play.data.validation.Required;
import play.data.validation.Valid;
import play.mvc.*;
import sun.security.action.GetLongAction;
import utils.Security;


public class Dentistas extends Controller {

	/**
	 * Recupera e exibe lista de Dentistas cadastrados.
	 */
	public static void index() {

		Security.deny();		
		
		List<Dentista> dentistas = Dentista.all().fetch();
		
		render(dentistas);
	}
	
	/**
	 * Recupera um dentista através do seu id.
	 * @param id
     */
	public static void show(long id)
	{
		Dentista dentista = Dentista.findById(id);
		Logger.info("show %s", dentista);
		render("@form",dentista);
	}
	
	/**
	 * Exibe o form de cadastro de dentistas.
	 */
	public static void create()
	{
		Security.deny();
		Dentista dentista = new Dentista();
		render("@form",dentista);
		
	}

	/**
	 * Salva (persiste) o dentista na base.
	 * @param dentista
	 */
	public static void save(@Valid Dentista dentista)
	{
		Security.deny();
		
		Logger.info("save %s", dentista);
		
		if (dentista.horaInicialManha>dentista.horaFinalManha)
		{
			validation.addError("dentista.horaInicialManha", "Hora inicial não pode ser maior que a hora final");
		}
		
		if (dentista.horaInicialTarde>dentista.horaFinalTarde)
		{
			validation.addError("dentista.horaInicialTarde", "Hora inicial não pode ser maior que a hora final");
		}
		
		if (validation.hasErrors())
		{
			flash.error("Favor corrigir os erros a seguir");
			render("@form",dentista);
		}
		dentista.save();
		flash.success("Salvo com sucesso");
		index();
	}
	
	/**
	 * Exclui o dentista pelo seu id.
	 * @param id
	 */
	public static void delete(long id)
	{
		Dentista dentista = Dentista.findById(id);
		Logger.info("delete %s", dentista);
		dentista.delete();
		flash.success("Apagado com sucesso");
		index();
	}
	
	/**
	 * Exibe as consultas do dentista que está logado
	 */
	public static void showConsultas()
	{
		//Mostra todas as consultas do Dentista
		Dentista d = (Dentista)Login.getLogin();
		List<Consulta> consultas = Consulta.find("byDentista", d).fetch();
		int soma = 0;
		List<Paciente> pacientes = Paciente.all().fetch();
		List<Procedimento> procedimentos = Procedimento.all().fetch();
		render(consultas,soma,pacientes,procedimentos);
	}
	
	public static void showConsultasByDate(Date data1, Date data2)
	{
		//Mostra todas as consultas do Dentista
		Dentista d = (Dentista)Login.getLogin();
		List<Consulta> consultas = Consulta.find("byDentista", d).fetch();
		int soma = 0;
		List<Paciente> pacientes = Paciente.all().fetch();	
		List<Procedimento> procedimentos = Procedimento.all().fetch();
		render("@showConsultas",consultas,soma,pacientes,procedimentos);
	}
	
	public static void showConsultasByPaciente(Date data1, Date data2)
	{
		//Mostra todas as consultas do Dentista
		Dentista d = (Dentista)Login.getLogin();
		List<Consulta> consultas = Consulta.find("byDentista", d).fetch();
		int soma = 0;
		List<Paciente> pacientes = Paciente.all().fetch();
		List<Procedimento> procedimentos = Procedimento.all().fetch();
		render("@showConsultas",consultas,soma,pacientes,procedimentos);
	}
	
	public static void listByDate()
	{
		Dentista d = (Dentista)Login.getLogin();
		List<Consulta> consultas = Consulta.find("byDentista", d).fetch();
		renderJSON(consultas);
	}

	
}
